Ethereum2.0におけるVerkle Triesの実測値
POSプロトコルでのデータサンプリングとシャーディング
ETH POSの目標の1つは、チェーンに約1.5MB/sのデータをコミットできるようにすること
このスループットは、レイヤー2のロールアップが使用できる状態変化のスループット
つまりトランザクションのスループット、そして最終的にはレイヤー1のEVMと考えてください
これを実現するために、12秒のスロットで多くの並列プロポーザルが行われ、検証される。
そのため、複数(~64)のデータ・シャードが存在し、それぞれがshard blob をスロットごとに発行する
ビーコンブロック(beacon chain)には、2/3以上の投票支持を得たshard blob が含まれ、 fork choice ruleは、そのビーコンブロックとその祖先にあるすべてのブロブの利用可能性に基づいて、ビーコンブロックが正規のものであるかどうかを決定する
注3:シャードはここではチェーンではなく、暗黙の順序はレイヤー2のプロトコルによって解釈される必要があります。
Kate commitmentは、シャード提案者がシャード全体に公開したデータにクライアントがアクセスすることなく、データの有効性と可用性のスキームを構築するために使用できる
https://scrapbox.io/files/60efbb411fb410001cdc6cbb.png
Shard blob(消去符号化なし)は、16384(32バイト)のサンプル~512kBで、Shard headerは主に、これらのサンプルに対応する最大16384次の多項式コミットメントで構成されています。
しかし、多項式の評価表現の領域Dは、2*16384サイズ、すなわち$ 1,w^1,...w^,...w^{32767}(wは32768番目のユニティの根)であり、16384ではないのである。
これにより、データに最大16384次の多項式を当てはめ(f(w^i)=sample-i for i<16384)、それを32768箇所に拡張(評価)して、消去符号化サンプルとしてf(w^16384)・・・f(w^32767)を評価することができる。
これらの各ポイントでの評価の証明も計算され、サンプルと一緒に束ねられます。
32768個のサンプルのうち、16384個のサンプルは、f(x)を完全に復元するために使用することができ、したがって元のサンプルであるf(1),f(w^1),f(w^2)...f(w^16383)を復元することができます。
これらの消去コード化された32768個のサンプルのうち、2048個のチャンク(各チャンクには16個のサンプル、つまり512バイトのチャンク)がシャード提案者によって水平方向に公開され(チャンクはそれぞれの証明とともにi番目の垂直方向のサブネットに送られる)、さらにグローバルには完全なブロブのコミットメントが公開されます。
各バリデータは、割り当てられた(shard,slot)のk~20個の垂直サブネット上でチャンクをダウンロードしてチェックし(それぞれのblobのコミットメントで検証)、可用性の保証を確立する。
1つの(shard,slot)に十分な数のバリデーターを割り当てて、共同でデータの半分(またはそれ以上)をカバーできるようにする必要がある。
~262144人のバリデータ(32スロット*64シャード*128人の最小委員会サイズ)`が必要です。
Benchmarks
POC verkle go libraryからわかるように、ステートツリーのサイズに合わせてverkleを1回構築した後は、verkleへの挿入と更新がかなり高速になります。
https://scrapbox.io/files/60efbb96fb88ff001c98c82f.png
https://scrapbox.io/files/60efbb9db1b7c0001c749492.png
https://scrapbox.io/files/60efbba1141dd3001ff8bc51.png